#include "LoginWindow.h"
#include <QApplication>
#include <QThread>
#include <QDebug>
#include "src/QtTcp/xdgTcpClient.h"


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 1. 创建 IO 线程
    QThread* ioThread = new QThread;
    ioThread->setObjectName("NetworkIOThread");

    // 2. 创建 Client (无父对象) 并移入 IO 线程
    xdgTcpClient* client = new xdgTcpClient(nullptr);
    client->moveToThread(ioThread);

    // 3. 线程生命周期管理。当程序退出时，请求 IO 线程退出
    QObject::connect(&app, &QCoreApplication::aboutToQuit, [&](){
        ioThread->quit();
        ioThread->wait(1000); // 等待最多1秒
    });
    //   当 IO 线程结束后，清理 client 和 thread
    QObject::connect(ioThread, &QThread::finished, client, &QObject::deleteLater);
    QObject::connect(ioThread, &QThread::finished, ioThread, &QObject::deleteLater);

    // 4. 启动 IO 线程
    ioThread->start();


    // 5. 创建并显示登录窗口
    //    将 client 指针 "注入" 登录窗口。LoginWindow 将在构造函数中发起连接
    LoginWindow logWin(client);
    logWin.show ();
    return app.exec();
}
